package br.com.socialmeeting.dao.impl;

import java.util.List;

import org.hibernate.SessionFactory;
import org.hibernate.criterion.DetachedCriteria;
import org.hibernate.criterion.Restrictions;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.security.core.userdetails.UsernameNotFoundException;

import br.com.socialmeeting.dao.UsuarioDAO;
import br.com.socialmeeting.model.Usuario;

public class UsuarioDaoImp extends GenericDAOImp<Usuario, Long> implements UsuarioDAO {

	@Autowired
	private SessionFactory sessionFactory;
	
	@SuppressWarnings("unchecked")
	public Usuario findByName(String login) {
		
		DetachedCriteria criteria = DetachedCriteria.forClass(Usuario.class, "usuario");
		criteria.add(Restrictions.eq("usuario.login", login));
		List<Usuario> resultado = getHibernateTemplate().findByCriteria(criteria);
		if(resultado != null && resultado.size() == 0) {
			throw new UsernameNotFoundException("Usuario nao encontrado!");
	    }	
		return (Usuario)resultado.get(0);
		
	}

	public Usuario createNewUser(Usuario usuario) {
		return save(usuario);
	}


}
